package IT.Servlet;

import IT.DataAccess.DatCliente;
import IT.DataAccess.DatClienteContacto;
import IT.DataAccess.DatClienteProspecto;
import IT.DataAccess.IDatCliente;
import IT.DataAccess.IDatClienteContacto;
import IT.DataAccess.IDatClienteProspecto;
import IT.Entities.Cliente;
import IT.Entities.ClienteContacto;
import IT.Entities.ClienteProspecto;
import IT.Entities.Usuario;
import IT.Helper.Helper;
import java.io.*;
//import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class ProspectoServlet extends HttpServlet {   
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
      
       String cAccion="";
       String cMensaje="";
       int nCliente=0;    
       int nCodigo=0;
       String cCorreo="";
       IDatClienteProspecto oDatProspecto;
       ClienteProspecto oProspecto;      
       
       IDatCliente oDatCliente;
       IDatClienteContacto oDatContacto;
       ClienteContacto oContacto;
       Usuario oUsuario;
       
       Helper oHelper=new Helper();
       if(request.getParameter("btnAccion")!=null){
          oUsuario=(Usuario)request.getSession().getAttribute("Usuario");
          cAccion=request.getParameter("btnAccion").trim(); 
          //Insertar
           if(cAccion.trim().equals("Insertar")){
               
               if(request.getParameter("txtNNombre").trim().length()==0){
                    cMensaje+="<li>Prospecto es obligatorio</li>";
               }else{
                    if(request.getParameter("txtNNombre").trim().length()<2){
                        cMensaje+="<li>Prospecto debe ser mayor o igual a 2 caracteres</li>";
                    }
               }
               
               if(request.getParameter("txtNCorreo").trim().length()!=0){
                    cCorreo=oHelper.ValidaEncode(request.getParameter("txtNCorreo"));
                    if(oHelper.esCorreo(cCorreo)==false){
                        cMensaje+="<li>Error, correo formato invalido. Ejemplo: usuario@mail.com</li>";
                    }
               }
               
                    
               nCodigo=0;
               if(cMensaje.trim().length()==0){
                   oProspecto=new ClienteProspecto();
                   oProspecto.setCli_pro_vc(request.getParameter("txtNNombre"));
                   oProspecto.setCon_pro_vc(request.getParameter("txtNContacto"));
                   oProspecto.setCor_pro_vc(request.getParameter("txtNCorreo"));
                   oProspecto.setTel_pro_vc(request.getParameter("txtNTelefono"));
                   oProspecto.setLin_pro_in(Integer.parseInt(request.getParameter("cboNLinea")));
                   oProspecto.setLle_pro_in(Integer.parseInt(request.getParameter("cboNLLegada")));
                   oProspecto.setDes_pro_vc(request.getParameter("txtNDescripcion"));
                   oProspecto.setCod_emp_in(oUsuario.getCod_emp_in());
                   oDatProspecto=new DatClienteProspecto();
                   nCodigo=oDatProspecto.Insertar(oProspecto);
                   
                   if(nCodigo==0){
                       request.getSession().setAttribute("lblMensaje","<ul><li>Error al registrar prospecto, revisar datos</li></ul>");  
                   }
               }else{
                request.getSession().setAttribute("lblMensaje","<ul>"+cMensaje+"</ul>");  
               }
               
               response.sendRedirect("WebProspecto.jsp");
           }
          
           if(cAccion.trim().equals("Guardar")){
               
                if(request.getParameter("txtNombre").trim().length()==0){
                    cMensaje+="<li>Prospecto es obligatorio</li>";
               }else{
                    if(request.getParameter("txtNombre").trim().length()<2){
                        cMensaje+="<li>Prospecto debe ser mayor o igual a 2 caracteres</li>";
                    }
               }
               
               if(request.getParameter("txtCorreo").trim().length()!=0){
                    cCorreo=oHelper.ValidaEncode(request.getParameter("txtCorreo"));
                    if(oHelper.esCorreo(cCorreo)==false){
                        cMensaje+="<li>Error, correo formato invalido. Ejemplo: usuario@mail.com</li>";
                    }
               }
                
               nCodigo=Integer.parseInt(request.getParameter("hdnCodigo"));
               if(cMensaje.trim().length()==0){                   
               
               oProspecto=new ClienteProspecto();
               oProspecto.setCod_pro_in(nCodigo);
               oProspecto.setCli_pro_vc(request.getParameter("txtNombre"));
               oProspecto.setCon_pro_vc(request.getParameter("txtContacto"));
               oProspecto.setCor_pro_vc(request.getParameter("txtCorreo"));
               oProspecto.setTel_pro_vc(request.getParameter("txtTelefono"));
               oProspecto.setLin_pro_in(Integer.parseInt(request.getParameter("cboLinea")));
               oProspecto.setLle_pro_in(Integer.parseInt(request.getParameter("cboLLegada")));
               oProspecto.setDes_pro_vc(request.getParameter("txtDescripcion"));
               oProspecto.setCod_emp_in(oUsuario.getCod_emp_in());
               oDatProspecto=new DatClienteProspecto();
               oDatProspecto.Editar(oProspecto);
                    response.sendRedirect("WebProspecto.jsp");
               }else{
                    response.sendRedirect("WebProspecto.jsp?nEditar="+String.valueOf(nCodigo).trim());  
                    request.getSession().setAttribute("lblMensaje","<ul>"+cMensaje+"</ul>");  
               }   
               }
          
               if(cAccion.trim().equals("Cancelar")){
                   response.sendRedirect("WebProspecto.jsp");
               }
       }
       
       if(request.getParameter("btnCliente")!=null){
            oUsuario=(Usuario)request.getSession().getAttribute("Usuario");
            cAccion=request.getParameter("btnCliente").trim(); 
            
            String cNumero="";
            long nNumero=0;
            
            if(cAccion.trim().equals("Registrar")){
               //RUC
               if(request.getParameter("txtRUC").trim().length()==0){
                    cMensaje+="<li>Ruc es obligatorio</li>";
               }else{
                    try{
                        cNumero=request.getParameter("txtRUC").trim();
                        nNumero=Long.parseLong(request.getParameter("txtRUC").trim());                        
                        
                        if(cNumero.trim().length()!=11){
                            cMensaje+="<li>RUC debe tener 11 caracteres</li>";
                        }
                      
                    }catch(Exception ex){
                        cMensaje+="<li>Ruc debe ser numerico</li>";
                    }
               }
               
               //Cliente
               if(request.getParameter("txtEmpresa").trim().length()==0){
                    cMensaje+="<li>Empresa es obligatorio</li>";
               }else{
                    if(request.getParameter("txtEmpresa").trim().length()<2){
                        cMensaje+="<li>Empresa debe ser mayor o igual a 2 caracteres</li>";
                    }
               }
               
               if(request.getParameter("txtContato").trim().length()==0){
                    cMensaje+="<li>Contacto es obligatorio</li>";
               }else{
                    if(request.getParameter("txtContato").trim().length()<2){
                        cMensaje+="<li>Contacto debe ser mayor o igual a 2 caracteres</li>";
                    }
               }
               
               int nResultado=0;
               nCodigo=0;
               
               if(request.getParameter("hdnCodigo").trim().length()==0){
                    cMensaje+="<li>Codigo es obligatorio</li>";
               }else{
                    try{
                        nCodigo=Integer.parseInt(request.getParameter("hdnCodigo").trim());
                    }catch(Exception ex){
                        cMensaje+="<li>Codigo formato incorrecto</li>";
                    }
               }
               
               if(cMensaje.trim().length()==0){
                  oUsuario=new Usuario();
                  oUsuario=(Usuario)request.getSession().getAttribute("Usuario");
                   
                  oDatCliente=new DatCliente();     
                  oDatProspecto=new DatClienteProspecto();
                  /*Validar RUC*/
                  nResultado=oDatCliente.ValidaDoc(new Cliente(0, 1, cNumero));   
                  
                  if(nResultado==0){
                      
                      nCliente=oDatCliente.Insertar(new Cliente(1, 1, cNumero, oHelper.ValidaEncode(request.getParameter("txtEmpresa").trim()), "", 
                                "", "" , 1, 0,oUsuario.getCod_emp_in(),nCodigo));
                      oDatProspecto.Estado(nCodigo, 2);
                      
                      if(nCliente!=0){
                          oDatContacto=new DatClienteContacto();
                          oContacto=new ClienteContacto();
                          oContacto.setNom_con_vc(oHelper.ValidaEncode(request.getParameter("txtContato").trim()));
                          oContacto.setTel1_con_vc(oHelper.ValidaEncode(request.getParameter("txtTelefono").trim()));
                          oContacto.setTel2_con_vc("");
                          oContacto.setTel3_con_vc("");
                          oContacto.setTel4_con_vc("");
                          oContacto.setTel5_con_vc("");
                          oContacto.setCar_con_in(0);
                          oContacto.setAr_con_in(0);
                          oContacto.setEst_con_in(1);
                          oContacto.setCod_cli_in(nCliente);
                          oContacto.setCor_con_vc(oHelper.ValidaEncode(request.getParameter("txtCorreo").trim()));
                          oContacto.setPrin_con_bo(true);
                          oDatContacto.Insertar(oContacto);                      
                      }
                  
                  }else{
                    cMensaje="<ul><li>Ya existe cliente con ese RUC</li></ul>";
                    request.getSession().setAttribute("lblMensaje","<ul>"+cMensaje+"</ul>");  
                  }
               }else{
                     request.getSession().setAttribute("lblMensaje","<ul>"+cMensaje+"</ul>");  
               }
               
               response.sendRedirect("WebProspectoCliente.jsp?nCodigo="+String.valueOf(nCodigo));
               
            }
       }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
